#include <limits.h>  // INT_MIN,INT_MAX
#include <math.h>    // abs,pow

#include <algorithm>      // sort
#include <iostream>       // cout,cin
#include <numeric>        // accumulate
#include <string>         // string
#include <unordered_map>  // unordered_map
#include <unordered_set>  // unordered_set
#include <vector>         // vector

using namespace std;

// 如果x是2的幂则返回True，否则返回False
bool IsPowerOf2(int x) { return (x & (x - 1)) == 0; }

class Solution {
   public:
    bool isPalindrome(string s) {
        // 将大写转化为小写
        transform(s.begin(), s.end(), s.begin(), ::tolower);

        int size = s.size();

        int l = 0, r = size - 1;
        while (l < r) {
            // 忽略字符和数字以外的字符
            while (l < r && !isalnum(s[l])) {
                l++;
            }
            while (l < r && !isalnum(s[r])) {
                r--;
            }
            if (s[l] != s[r]) {
                return false;
            }
            l++;
            r--;
        }

        return true;
    }
};

int main() {
    Solution solution;
    return 0;
}